package pro.cherish.knowledgeumldesignpattern.designPattern.com.cherish.chainOfResp;
//责任链模式的扩展性比较好
//这个案例是链表形式
//也可以非链表形式，如集合和数组形式，就是维护组织关系时简便：
// 具体操作方法就是，定义一个关系类（包含一个容器），容器中将维护这些责任链对象的关系，最后进行迭代遍历
//场景：异常机制，一个try使用多个catch
//js中的时间冒泡捕获机制，java语言中事件处理是观察者不是责任链
//servlet开发中，过滤器的链式处理
//struct2中的拦截器调用也是责任链模式
public class client {
    public static void main(String [] args){
        Director director = new Director("张主任");
        Manager manager = new Manager("李经理");
        GeneraManager generaManager = new GeneraManager("赖总经理");
//      组织责任链对象关系(可以写在配置文件，使用反射处理)
        director.setNextLeader(manager);
        manager.setNextLeader(generaManager);
//开始请假操作
        LeaveRequest leaveRequest = new LeaveRequest("TOM", 1, "回国");
        director.handleRequest(leaveRequest);
    }
}
